package com.gui.info;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.border.EmptyBorder;

import com.controller.InfoCon;
import com.gui.baseframe.BaseFrame;
import com.tool.DatabaseTool;

/**
 * 公告
 *
 */
public class InfoFrame extends BaseFrame {
	//两个常量，表格的行数，列数
	
	private static final int ROW=25;
	private static final int COLS=5;
	//一个存放选项卡的组件
	public InfoFrame(){

		//针对左边的中间容器
//		JPanel jpLeft=createLeftPanel();
		//设置选项卡
		JTabbedPane jTabbedpane=new JTabbedPane();
		jTabbedpane.setBorder(new EmptyBorder(20, 20, 20, 20));
		JPanel jp1=createjp1();		
		jTabbedpane.add("数据操作", jp1);
		//将选项卡窗体添加到主窗体上去
		this.add(jTabbedpane,BorderLayout.CENTER);
		init();
		this.setSize(550,400);
	}

	/**
	 * 布局
	 */
	private JPanel createjp1() {
		
		JPanel jp = new JPanel();
		jp.setLayout(new BorderLayout());
		JPanel top = new JPanel();
		JLabel label=new JLabel("以下是公告的内容：");
		top.add(label);
		JPanel buttom=new JPanel();
		JPanel p1=new JPanel();
				InfoCon inf=new InfoCon();
				//每次刷新将之前的清空，将新的添加进去
				p1.removeAll();
				//实现刷新
				JTable table=inf.shuaxin();
				table.setVisible(true);
				//滚动条面板
				JScrollPane jsp=new JScrollPane(table);
				Dimension ds = new Dimension(500, 240);
				jsp.setPreferredSize(ds);
				//滚动条可见
				jsp.setVisible(true);
				p1.add(jsp);
				//表的立即更新
				table.updateUI();
				//滚动条的立即更新
				jsp.updateUI();
				//面板的立即更新
				p1.updateUI();
				
		//增加公告按钮
		JButton selBtn=new JButton("产生日志文件");
		selBtn.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
			String path="d:"+File.separator+"daily.txt";
				//定义一个输出文件的路径
			File file=new File(path);
			//此时由于目录不存在，所以文件不能够输出，那么应该首先创建文件的目录
			if(!file.getParentFile().exists()){
				//创建目录
				file.getParentFile().mkdirs();
			}
			//使用OutputStream和其子类进行对象的实例化，此时目录存在，文件不存在
			try {
				OutputStream output=new FileOutputStream(file,true);
				
				InfoCon inf=new InfoCon();
				inf.shuaxin();
				List<String> list=DatabaseTool.doQuery("select * from info");
				String str = "";
				for(int i=0;i<list.size();i++){
					//进行表格内容的输出	
					str+=list.get(i)+"\r\n";
				}				
				//将字符串变为字节数组
				byte data[]=str.getBytes();
				//将内容输出
				try {
					output.write(data);
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			}finally{
				//一个提示对话框
				JOptionPane.showMessageDialog(null,"导出日志成功,在"+path,"",JOptionPane.INFORMATION_MESSAGE);
			}				
			}	
		});		
		//退出公告按钮
		JButton exitBtn=new JButton("退出公告");
		//退出按钮的监视器
		ActionJT  acjt = new ActionJT();
		exitBtn.addActionListener(acjt);
		buttom.add(selBtn);
		buttom.add(exitBtn);
		jp.add(buttom, BorderLayout.SOUTH);
		jp.add(p1, BorderLayout.CENTER);
		jp.add(top, BorderLayout.NORTH);
		return jp;
		
	}
	
	/**
	 * 退出按钮的监听器
	 *
	 */
	class ActionJT implements  ActionListener{

		@Override
		public void actionPerformed(ActionEvent e)
		{
			//退出程序
			setVisible(false);
		}
		
	} 
	public void init()
	{
		super.init(); 
		this.setLocation(480,300);
		this.setDefaultCloseOperation(HIDE_ON_CLOSE);
	}
	
}
	

     
	

